RFC 791
RFC 791
https://datatracker.ietf.org/doc/html/rfc791
http://srgia.com/docs/rfc791j.html
https://www2s.biglobe.ne.jp/~hig/tcpip/ip.html
1. はじめに
1.1. 目的
インターネット・プロトコルは、パケット交換型コンピュータ通信ネットワークの相互接続システムでの使用を目的として設計されている。このようなシステムは「カテネット」1と呼ばれている。インターネット・プロトコルは、データグラムと呼ばれるデータブロックを送信元から宛先へ転送する。送信元と宛先は、固定長アドレスで識別されるホストである。また、インターネット・プロトコルは、必要に応じて、長いデータグラムを分割・再構成し、「スモール・パケット」ネットワークで転送する機能も備えている。
1.2. 適用範囲
インターネットプロトコルは、相互接続されたネットワークシステムを介して、ビットのパッケージ(インターネットデータグラム)を送信元から宛先に配送するために必要な機能を提供することに限定されています。エンドツーエンドのデータ信頼性、フロー制御、シーケンス制御、あるいはホスト間プロトコルに一般的に見られるその他のサービスを拡張するメカニズムは存在しません。インターネットプロトコルは、サポートネットワークのサービスを活用して、様々な種類および品質のサービスを提供することができます。
1.3. インタフェース
このプロトコルは、インターネット環境においてホスト間プロトコルによって呼び出されます。このプロトコルは、インターネットデータグラムを次のゲートウェイまたは宛先ホストに運ぶために、ローカルネットワークプロトコルを呼び出します。
例えば、TCPモジュールは、インターネットデータグラムのデータ部分としてTCPセグメント(TCPヘッダーおよびユーザデータを含む)を取得するために、インターネットモジュールを呼び出します。TCPモジュールは、インターネットヘッダー内のアドレスおよびその他のパラメータを、呼び出しの引数としてインターネットモジュールに提供します。次に、インターネットモジュールはインターネットデータグラムを作成し、ローカルネットワークインターフェースにインターネットデータグラムの送信を依頼します。
例えばARPANETの場合、インターネットモジュールはローカルネットワークモジュールに呼び出しを行い、ローカルネットワークモジュールはインターネットデータグラムに1822リーダー2を付加して、IMPに送信するARPANETメッセージを作成します。ARPANETアドレスは、ローカルネットワークインターフェースによってインターネットアドレスから生成され、ARPANET内のホストのアドレスとなります。そのホストは、他のネットワークへのゲートウェイとなる場合もあります。
3.1. Internet Header Format
インターネットヘッダーの内容の概要は次のとおりです。
code:インターネットデータグラムヘッダ
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |サービス種別(ToS| 全長 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 識別 |フラグ| フラグメントオフセット |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time To Live | プロトコル | ヘッダーチェックサム |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 送信元アドレス |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 宛先アドレス |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| オプション | パディング |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
図4. インターネットデータグラムヘッダーの例
チェックマーク1つにつき1ビットの位置が対応していることに注意してください。
バージョン Version: 4ビット
バージョンフィールドは、インターネットヘッダーのフォーマットを示します。このドキュメントではバージョン4について説明します。
IHL: 4ビット
インターネットヘッダー長は、インターネットヘッダーの長さを32ビットワード単位で表したもので、データの先頭を指します。正しいヘッダーの最小値は5であることに注意してください。
サービス種別 Type of Service (ToS): 8ビット
RFC 2474 で 拡張されるかもしれない
サービス種別は、要求されるサービス品質の抽象的なパラメータを示します。これらのパラメータは、特定のネットワークを介してデータグラムを伝送する際に、実際のサービスパラメータを選択する際に使用されます。いくつかのネットワークでは、サービス優先度が提供されています。これは、高優先度のトラフィックを他のトラフィックよりも重要視する仕組みです(一般的には、高負荷時に一定の優先度を超えるトラフィックのみを受け入れることで実現されます)。主な選択肢は、低遅延、高信頼性、高スループットの3つの要素のトレードオフです。
Bits 0-2: 優先順位 Precedence.
Bit 3: 0 = 通常遅延 Normal Delay, 1 = 低遅延 Low Delay.
Bits 4: 0 = 通常のスループット Normal Throughput, 1 = 高スループット High Throughput.
Bits 5: 0 = 通常の信頼性 Normal Relibility, 1 = 高信頼性 High Relibility.
Bit 6-7: 将来の使用のために予約されています。 Reserved for Future Use.
code:Type of Service
0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| 優先順位 | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+
優先順位 Precedence
111 - ネットワーク制御 Network Control
110 - インターネットワーク制御 Internetwork Control
101 - CRITIC/ECP
100 - 瞬時より上 Flash Override
011 - 瞬時 Flash
010 - 即時 Immediate
001 - 優先 Priority
000 - ルーチン Routine
遅延、スループット、および信頼性の指標を使用すると、サービスのコストが(ある意味で)増加する可能性があります。多くのネットワークでは、これらのパラメータのいずれかのパフォーマンスが向上すると、別のパラメータのパフォーマンスが低下するという状況が見られます。極めて例外的な場合を除き、これら3つの指標のうち最大でも2つを設定する必要があります。
サービスタイプは、インターネットシステムを通過するデータグラムの取り扱いを指定するために使用されます。AUTODIN II、ARPANET、SATNET、PRNETなどのネットワークで提供される実際のサービスとインターネットサービスタイプのマッピング例は、「サービスマッピング」8に記載されています。
ネットワーク制御優先度指定は、ネットワーク内だけで使用することを意図しています。この指定の実際の使用と制御は各ネットワークに委ねられます。インターネットワーク制御指定は、ゲートウェイ制御の発信者のみが使用することを目的としています。これらの優先度指定の実際の使用が特定のネットワークで問題となる場合、そのネットワークは、これらの優先度指定へのアクセスと使用を制御する責任を負います。
全長:16ビット
全長は、インターネットヘッダーとデータを含むデータグラムの長さをオクテット単位で表したものです。このフィールドでは、データグラムの長さを最大65,535オクテットまで許容します。これほど長いデータグラムは、ほとんどのホストおよびネットワークにとって現実的ではありません。すべてのホストは、最大576オクテットのデータグラム(データグラムが全体またはフラグメントで到着するかどうかに関係なく)を受け入れる準備ができていなければなりません。ホストは、宛先が576オクテットを超えるデータグラムを受け入れる準備ができているという確信がある場合にのみ、576オクテットを超えるデータグラムを送信することを推奨します。
576という数字は、必要なヘッダー情報に加えて、適切なサイズのデータ​​ブロックを送信できるようにするために選択されています。例えば、このサイズであれば、512オクテットのデータブロックと64オクテットのヘッダーをデータグラムに収めることができます。インターネットヘッダーの最大サイズは60オクテットですが、典​​型的なインターネットヘッダーは20オクテットであるため、上位プロトコルのヘッダーのための余裕が生まれます。